💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    06 배포 장고서버 static 파일 Nginx서버에 실시간 동기화처리방법 | ✅ 편저: 코담 운영자

    장고서버 static (정적인) 파일들을 Nginx 서버에 실시간 동기화 처리 방법

    🔧 1. Nginx 서버 설정 (192.168.120.130)

    sudo mkdir -p /var/www/ai_rest/staticfiles
    sudo chown -R nextjs:www-data /var/www/ai_rest/staticfiles
    sudo chmod -R 755 /var/www/ai_rest/staticfiles  # 필요 시 보안 강화 가능
    

    Nginx 설정 예시:

    location /static/ {
        alias /var/www/ai_rest/staticfiles/;
    }
    

    🔐 2. SSH 무비밀번호 접속 설정 (자동 rsync를 위해 필수)

    ✅ 1. Django 서버에서 SSH 키 생성 (한 번만 실행)

    ssh-keygen -t rsa -b 4096 -C "python@django-server"
    
    • 경로 물어보면 그냥 Enter (기본값: ~/.ssh/id_rsa)
    • 비밀번호도 설정하지 말고 그냥 Enter

    생성되면 다음 두 개 파일이 생깁니다:

    • ~/.ssh/id_rsa (개인키)
    • ~/.ssh/id_rsa.pub (공개키)

    ✅ 2. Nginx 서버에 공개키 등록

    Django 서버에서 아래 명령 실행:

    ssh-copy-id nextjs@192.168.120.130
    
    

    이 명령은 Django 서버의 공개키(id_rsa.pub)를 Nginx 서버의 /home/nextjs/.ssh/authorized_keys에 추가합니다.

    ✅ 3. 테스트

    Django 서버에서 다음 명령어로 확인:

    ssh nextjs@192.168.120.130
    

    ➜ 비밀번호 없이 바로 접속되면 성공입니다. 이후 rsync, scp 명령도 자동 작동됩니다.

    ✅ 선택 사항: 보안 권장 설정

    Nginx 서버 /etc/ssh/sshd_config 파일에서 아래 항목을 확인:

    PubkeyAuthentication yes
    PasswordAuthentication no  # 키 등록 완료 후 적용 권장
    
    sudo systemctl restart ssh
    

    🔄 3. Django 서버에서 초기 정적 파일 복사 (192.168.120.129)

    scp -r /home/python/ai_rest/staticfiles/* nextjs@192.168.120.130:/var/www/ai_rest/staticfiles/
    

    ✅ 위 명령은 초기 단발성 복사용입니다. 실시간 동기화는 아래 inotify 방식을 사용하세요.


    ⚙️ 4. inotify로 실시간 감지 및 자동 rsync 실행

    inotify-tools 설치

    sudo apt install inotify-tools
    

    sync_staticfiles.sh

    #!/bin/bash
    
    # 실시간 감시 및 rsync 동기화
    inotifywait -m -r -e modify,create,delete /home/python/ai_rest/staticfiles \
    | while read path _ file; do
        rsync -az --delete /home/python/ai_rest/staticfiles/ nextjs@192.168.120.130:/var/www/ai_rest/staticfiles/
    done
    

    실행 권한 부여

    chmod +x /home/python/sync_staticfiles.sh
    

    🎛️ 5. 백그라운드 실행 방법

    (1) tmux 사용

    tmux new -s static_sync
    ./sync_staticfiles.sh
    

    Detach: Ctrl + Bd

    (2) screen 사용

    screen -S static_sync
    ./sync_staticfiles.sh
    

    Detach: Ctrl + Ad


    🛠️ 6. systemd 서비스 등록 (재부팅 자동 실행)

    서비스 유닛 생성

    sudo vi /etc/systemd/system/static-sync.service
    
    [Unit]
    Description=Static files sync with inotify
    After=network.target
    
    [Service]
    Type=simple
    User=python
    ExecStart=/home/python/sync_staticfiles.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    systemd 적용 및 실행

    sudo systemctl daemon-reload
    sudo systemctl enable static-sync
    sudo systemctl start static-sync
    

    상태 확인

    sudo systemctl status static-sync
    

    ✅ 마무리

    • 실시간 동기화를 위한 보안 강화 권장:
      • Nginx static 디렉토리 경로의 접근 권한 점검
      • .php, .sh, .cgi 등의 실행 파일 업로드 방지 설정
      • SSH 키 관리는 root 외 사용자로 제한
    • 블로그 게시 시에는 아이콘 대신 텍스트 또는 HTML 태그 사용 권장
    TOP
    preload preload